package com.group.dao;

import org.apache.ibatis.annotations.Param;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 工作流数据库操作
 * 
 * @author zhaolei
 * 
 */
@Repository
public interface BeanDaoHandler {

	/**
	 * 通用的插入
	 * 
	 * @param map
	 *            参数键值对
	 */
	public void add(Map<String, Object> map);

	/**
	 * 通用的批量插入
	 * 
	 * @param map
	 *            参数键值对
	 */
	public void addList(Map<String, Object> map);

	/**
	 * 通用的更新
	 * 
	 * @param map
	 *            参数键值对
	 */
	public void update(Map<String, Object> map);

	/**
	 * 通用的删除
	 * 
	 * @param map
	 *            参数键值对
	 */
	public void delete(Map<String, Object> map);

	/**
	 * 通用的查询
	 * 
	 * @param map
	 *            参数键值对
	 * @return 结果集（map形式）
	 */
	@NotNull
	public List<Map<String, Object>> query(Map<String, Object> map);

	/**
	 * 根据指定列的多个值查询
	 * 
	 * @param table
	 *            表名
	 * @param prop
	 *            属性名
	 * @param values
	 *            值集合
	 * @return 查询结果的map list
	 */
	@NotNull
	public List<Map<String, Object>> queryByMultiValue(@Param("table") String table, @Param("prop") String prop, @Param("values") List values);

	public int queryCount(Map<String, Object> map);

}
